# Darren
# 2025年02月20日19时25分25秒
# 多态
class Dog:
    def __init__(self, name):
        self.name = name

    def game(self):
        print("%s 蹦蹦跳跳的玩耍..." % self.name)


class XiaoTianDog(Dog):  # 继承
    def game(self):  # 方法重写
        print("%s 飞到天上去玩耍..." % self.name)


class Person:
    def __init__(self, name):
        self.name = name

    def game_with_dog(self, dog):
        print("%s 和 %s 快乐的玩耍..." % (self.name, dog.name))
        # 让狗玩耍
        dog.game()  # 调用对象的game方法


if __name__ == '__main__':
    dahuang = Dog('大黄')
    xiaoming = Person('小明')
    xiaotianquan = XiaoTianDog('哮天犬')
    xiaoming.game_with_dog(xiaotianquan)
    xiaoming.game_with_dog(dahuang)
# 多态: 不同的 子类对象 调用相同的 父类方法，产生不同的执行结果
# 前提：以 继承 和 重写父类方法 为前提
